InfiniBand™ (IB) is a switched-fabric communications link primarily used in high-performance computing. It has been standardized by the InfiniBand Trade Association. Computing devices (host processors and peripherals) connect to the IB fabric via a network interface adapter, which is referred to in IB parlance as a channel adapter. Host processors (or hosts) use a host channel adapter (HCA), while peripheral devices use a target channel adapter (TCA).
InfiniBand is a scalable switch-based point-to-point interconnect architecture which defines both a layered hardware protocol (Physical, Link, Network, Transport Layers) and a software layer, which manages initialization and communication between devices. The transport layer is responsible for in-order packet delivery, partitioning, channel multiplexing and transport services. The transport layer also handles transaction data segmentation when sending and reassembly when receiving.
Based on the Maximum Transfer Unit (MTU) of the path, the transport layer divides the data into packets of the proper size. A receiver reassembles the packets based on a Base Transport Header (BTH) which contains the destination queue pair and packet sequence number. The receiver acknowledges the packets, and the sender receives these acknowledgements as well as updates the completion queue with the status of the operation.
InfiniBand specifies the following transport services:                Reliable Connection (RC). RC provides a reliable transfer of data between two entities. RC transport provides RDMA operations, atomic operations, and reliable channel semantics. As a connection-oriented transport, RC requires a dedicated queue pair (QP) for each pair of requester and responder processes.        Unreliable Connection (UC). UC facilitates an unreliable transfer of data between two entities. Unlike RC, UC messages may be lost. UC provides RDMA capability, but does not guarantee ordering or reliability. Each pair of connected processes requires a dedicated QP.        Reliable Datagram (RD). Using RD enables a QP to send and receive messages from one or more QPs using a reliable datagram channel (RDC) between each pair of reliable datagram domains (RDDs). RD provides most of the features of RC, but does not require a dedicated QP for each process.        Unreliable Datagram (UD). With UD, a QP can send and receive messages from one or more QPs, but the messages may get lost. UD is connectionless, allowing a single QP to communicate with any other peer QP. UD has a limited message size, and does not guarantee ordering or reliability.        Raw Datagram. A raw datagram is a data link layer service which provides a QP with the ability to send and receive raw datagram messages that are not interpreted.        
A recent enhancement to InfiniBand is the Extended Reliable Connected (XRC) transport service (as described, for instance, in “Supplement to InfiniBand™ Architecture Specification Volume 1.2.1, Annex A14: Extended Reliable Connected (XRC) Transport Service”, 2009, Revision 1.0, whose disclosure is incorporated herein by reference). XRC enables a single receive QP to be shared by multiple shared receive queues (SRQs) across one or more processes running on a given host. As a result, each process can maintain a single send QP to each host rather than to each remote process. A receive QP is established per remote send QP and can be shared among all the processes on the host.